//package com.heima.skydemo.service.impl;
//
//
//import com.heima.skydemo.domin.common.WeChatProperties;
//import com.heima.skydemo.domin.dto.UserLoginDTO;
//import com.heima.skydemo.entity.User;
//import com.heima.skydemo.mapper.UserMapper;
//import com.heima.skydemo.service.UserService;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.stereotype.Service;
//
//import java.time.LocalDateTime;
//import java.util.HashMap;
//import java.util.Map;
//
//@Service
//public class UserServiceImpl implements UserService {
//
//    @Autowired
//    UserMapper userMapper;
//    @Autowired
//    WeChatProperties weChatProperties;
//
//    private static final String WX_LOGIN = "https://api.weixin.qq.com/sns/jscode2session";
//
//    /**
//     * 微信登录
//     *
//     * @param userLoginDTO
//     * @return
//     */
//    public User wxLogin(UserLoginDTO userLoginDTO) throws Exception {
//
//        String openid = getOpenid(userLoginDTO.getCode());
//
//        //判断openid是否存在
//        if (openid == null && openid.equals("")) {
//            throw new Exception("微信登录失败")
//        }
//        //当前用户为新用户,完成自动注册
//        User user = userMapper.getByOpenId(openid);
//        if (user == null) {
//            user = User.builder()
//                    .openid(openid)
//                    .createTime(LocalDateTime.now()).build();
//            userMapper.insertUser(user);
//        }
//        return user;
//    }
//
//    private String getOpenid(String code) {
//        Map<String, String> paramMap = new HashMap<>();
//        paramMap.put("appid", weChatProperties.getAppid());
//        paramMap.put("secret", weChatProperties.getSecret());
//        paramMap.put("js_code", code);
//        paramMap.put("grant_type", "authorization_code");
//        String result = HttpClientUtil.doGet(WX_LOGIN, paramMap);
//
//        //获取请求结果
//        JSONObject jsonObject = JSON.parseObject(result);
//        String openid = jsonObject.getString("openid");
//
//        return openid;
//
//    }
//
//}
